home *** CD-ROM | disk | FTP | other *** search
- ;----------------------------------------------------------------------------
- ; DisorderTracker2 file FORMAT STARTS HERE
- ;----------------------------------------------------------------------------
-
- well here it comes... I am converting this from the source
- code now, as I type, so I hope it is right!
-
- this is (c) statix 1995... and I accept no responsibility for errors
- in here,
- if there is a problem contact me --> statix@sv.span.com...
-
- here is a list of fields in a .PLM file, I assume you know some
- coding??
-
- name length (bytes) description
- =======================================================================
- ID 4 marker, always "PLM" then character 26
- headersize 1 number of bytes in header, including ID etc
- version 1 version code of file format, 10h, I think
- songname 48 ASCIIZ string
- channels 1 number of channels
- flags 1 flags byte, ignore this!
- maxvol 1 maximum volume for vol slides, normally 40h
- amplify 1 soundblaster amplify, 40h=no amplify
- initbpm 1 starting bpm of song, normally 125
- initspeed 1 starting speed of song, normally 6
- initpan 32 starting pan positions, always 32, 0=left,
- 15=right
- numsamps 1 number of samples in file
- numpats 1 number of patterns in file
- numorders 2 number of orders in file
- padding 1 ignore...
-
- ; now seek "headersize" bytes from the beginning of the file,
- (normally no
- ; change) now:
-
- orderlist 4*numorders a list of orders, format coming
- later...
- patternlist 4*numpats a list of file offsets of the patterns
- (dwords)
- samplelist 4*numsamps a list of file offsets of the samples
- (dwords)
-
- ; now read in the patterns, which are uncompressed.
- ; for each pattern, seek to the place in the file in the patternlist,
- and the
- ; format is below. (NOTE: if the patternlist has a position of 0, skip
- to next
- ; pattern)
-
- patternsize 4 (dword) number of bytes this pattern takes in
- file
- len byte # rows
- wid byte # channels
- col byte colour
- name 25 bytes name,asciiz string
-
- ;now the notes in the pattern, stored a row at a time, with "wid"
- channels
- ;in each row. the note format is:
-
- pitch byte hi nybble is octave, lo nybble is note (C=0,
- C#=1, D=2 etc). 0=blank
- sample byte sample number. 0=blank
- vol byte volume. 0ffh=blank. NOTE! big volumes >64
- are allowed!
- cmd byte command number
- nfo byte command info
-
-
- ; now read in the samples, which are uncompressed.
- ; for each sample, seek to the place in the file in the samplelist,
- and the
- ; format is below. (NOTE: if the samplelist has a position of 0, skip
- to next
- ; sample)
-
- ;in fact each sample is stored in the .PLM file as a complete .PLS
- sample file.
- ;The .PLS format is as follows:
-
- id 4 bytes always "PLS" then character 26
- headersize 1 byte size of header in bytes, including ID etc
- version 1 byte
- fullname 32 byte ; NOT asciiz
- filename 12 byte ; ditto
- pan byte ; default pan, 0..f, >f=none
- vol byte ; default vol 0..40h
- flags byte ; 1 = 16 bit , 0=8 bit
- c4spd word ; c4spd (as for S3M)
- gusloc dword ; posn in gusram (not used in file)
- loopst dword ; loopstart
- loopen dword ; loopend
- len dword ; data size IN BYTES
- data lots of bytes ; unsigned data
-
- ; default pan changes the pan on that channel when the sample is
- CHANGED
- ; to that sample, experiment in dt2 to see what I mean...
-
- ; note that default volume does NOT work like MOD or S3M default
- volume.
- ; default volume actually multiplies the volume field for that sample,
- so
- ; a default volume of 40h plays the sample as written in the file. a
- ; default volume of 20h always plays the sample half as loud as
- written in
- ; the file . This is a better system, I think... (more logical?!?)
-
- ; finally I will explain the format of the orderlist. Each one is 4
- bytes,
- ; and is:
-
- x word ; starting position of pattern
- y byte ; channel number of first channel of pattern
- pattern byte ; number of pattern
-
- ; I think that will make sense, If you see how dt2 works... note that
- is
- ; is very important to remember that patterns can overlap. In this
- case,
- ; the pattern with the higher x takes priority. If they have the same
- x,
- ; then it is the one with the higher pattern number. You can see this
- in
- ; dt2 by dragging patterns around on the over view screen.
-
- ; of course, this system with x and y for each pattern is what makes
- dt2
- ; unique, and also so hard to play with a standard player!!!
-
- hope that helps, and I have not made any errors... any questions, just
- email.
-
-
- ;---------------------------------------------------------------------------
- ; END OF DT2 FORMAT
- ;---------------------------------------------------------------------------
-
- ps If you want to spread that format, go ahead but please only spread
- with
- *ALL* of it, starting from the line that says "format starts here..."
-
- thankyou...
-
- ---------------------------------------------------------------------------
-
- With formats like PLM, with the identifier at the start of the file,
- it's very easy to rip them, just extract everthing after the marker..
-
-